package juegocartas.mus;

import java.util.List;

/**
 *
 * @author jorge
 */
class FaseMus implements Fase {

    private MesaMus mesa;
    private boolean descartando;

    public FaseMus(MesaMus motor) {
        this.mesa = motor;
    }

    @Override
    public String toString() {
        return "Fase de mus";
    }

    public void iniciar() {
        mesa.getPrimerJugador().decidirSiQuiereMus();
    }
    public void jugadorDiceMus(JugadorMus jugador) {
        for (ObservadorMesaMus observador : mesa.getObservadoresMesa()) {
            observador.informarQuiereMus(jugador);
        }

        JugadorMus siguienteJugador = mesa.getSiguienteJugador(jugador);
        if (siguienteJugador == null) {
            descartando = true;
        } else {
            siguienteJugador.decidirSiQuiereMus();
        }
    }

    public void jugadorDiceCorto(JugadorMus jugador) {
        for (ObservadorMesaMus observador : mesa.getObservadoresMesa()) {
            observador.informarCorta(jugador);
        }

        mesa.iniciarLances();
    }
    public void jugadorDescarta(JugadorMus jugador, List<Carta> descarte) {
        if (!descartando) {
            mesa.error("No se puede descartar ahora");
            return;
        }
        mesa.agregarAlMazo(descarte);
        mesa.repartirCartas(jugador, descarte.size());
    }

    public void jugadorDiceEnvido(JugadorMus jugador, int puntos) {
        mesa.error("No se puede envidar en fase de mus");
    }

    public void jugadorDiceQuiero(JugadorMus jugador, boolean quiere) {
        mesa.error("No se puede querer en fase de mus");
    }

    public void jugadorDiceOrdago(JugadorMus jugador) {
        mesa.error("No se puede dar ordago en fase de mus");
    }

    public void jugadorDicePaso(JugadorMus jugador) {
        mesa.error("No se puede pasar en fase de mus");
    }

    public void jugadorDiceQuiero(JugadorMus jugador) {
        mesa.error("No se puede querer en fase de mus");
    }

    public void jugadorDiceNoQuiero(JugadorMus jugador) {
        mesa.error("No se puede no querer en fase de mus");
    }

    public String getNombre() {
        return "Fase de mus";
    }




}
